iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0

設定完成後,開啟Django應用程式(APP)的views.py檔案,這邊就是撰寫LINE Bot接收訊息後,所要執行的運算邏輯,這邊先以使用者發送什麼訊息,就回覆什麼訊息為例,來測試Django應用程式(APP)能夠成功的和LINE頻道(Channel)進行連結,如下範例:

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
 
from linebot import LineBotApi, WebhookParser
from linebot.exceptions import InvalidSignatureError, LineBotApiError
from linebot.models import MessageEvent, TextSendMessage
 
line_bot_api = LineBotApi(settings.LINE_CHANNEL_ACCESS_TOKEN)
parser = WebhookParser(settings.LINE_CHANNEL_SECRET)
 
 
@csrf_exempt
def callback(request):
 
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
 
        try:
            events = parser.parse(body, signature)  # 傳入的事件
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()
 
        for event in events:
            if isinstance(event, MessageEvent):  # 如果有訊息事件
                line_bot_api.reply_message(  # 回復傳入的訊息文字
                    event.reply_token,
                    TextSendMessage(text=event.message.text)
                )
        return HttpResponse()
    else:
        return HttpResponseBadRequest()

這邊幾個地方說明一下,第10、11行為取得settings.py中的LINE Bot憑證來進行Messaging API的驗證。

而在callback檢視函式中,當偵測到使用者有傳入的事件,就會透過Python迴圈進行讀取(第28行),如果其中有訊息事件(第29行),則回覆使用者所傳入的文字(第30~33行)。


今天的歌曲是 周杰倫-療傷燒肉粽 Healing Rice Dumpling
https://www.youtube.com/watch?v=Aa5j0_61Xfo&list=PLFl6Na2uUoOZBEhBtQ_jeGA4P1V20JvpW&index=8&ab_channel=%E5%91%A8%E6%9D%B0%E5%80%ABJayChou


上一篇
DAY7 Ngrok運行原理&安裝Ngrok
下一篇
DAY9 Linebot 自動回應-2
系列文
Line Bot 以python及Django建構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言